package com.shujia.core

import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}

object Demo17CoGroup {
  def main(args: Array[String]): Unit = {
    /**
     * cogroup：转换算子，需要作用在KV格式的RDD上
     * 会按照相同的Key对两个RDD进行关联操作
     * 如果未关联上，则置为空，所有的数据都会保留
     * 实际上相当于full join操作
     */
    val conf: SparkConf = new SparkConf()
    conf.setMaster("local")
    conf.setAppName("Demo17CoGroup")

    val sc: SparkContext = new SparkContext(conf)

    val kvRDD01: RDD[(String, Int)] = sc.parallelize(List(("k1", 1), ("k2", 2), ("k3", 3)))
    val kvRDD02: RDD[(String, Int)] = sc.parallelize(List(("k2", 22), ("k3", 33), ("k4", 44)))

    kvRDD01.cogroup(kvRDD02).foreach(println)


  }

}
